package br.unifor.ads.desphouse.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * Classe utilitaria para trabalho com
 * datas
 * 
 * @author Alex Girao
 *
 */
public class DataUtil {
	
	/**
	 * Retorna a data atual
	 * 
	 * @return
	 */
	public static Date getDataAtual(){
		return new Date(System.currentTimeMillis());
	}
	
	/**
	 * Retorna a data informada avancada em mes(es)
	 * 
	 * @param data
	 * @param quantidadeMeses
	 * @return
	 * @throws Exception
	 */
	public static Date getDataAvancadaEmMeses(Date data, int quantidadeMeses) throws Exception{
		Calendar c = new GregorianCalendar();
		c.setTime(data);
		c.add(Calendar.MONTH, +quantidadeMeses);
		return c.getTime();
	}
	
	/**
	 * Retorna a data informada atrasada em mes(es)
	 * 
	 * @param data
	 * @param quantidadeMeses
	 * @return
	 * @throws Exception
	 */
	public static Date getDataAtrasadaEmMeses(Date data, int quantidadeMeses) throws Exception{
		Calendar c = new GregorianCalendar();
		c.setTime(data);
		c.add(Calendar.MONTH, -quantidadeMeses);
		return c.getTime();
	}
	
	/**
	 * Formata a data para o formato padrao
	 * dd/MM/yyyy
	 * 
	 * @param data
	 * @return
	 * @throws Exception
	 */
	public static String formatarDataPadrao(Date data) throws Exception{
		return new SimpleDateFormat("dd/MM/yyyy").format(data);
	}
	
	/*
	SimpleDateFormat sd = new SimpleDateFormat("dd/MM/yyyy");   
    
    Calendar c = new GregorianCalendar(2004, 9, 2);   
      
    System.out.println("Data: " + sd.format(c.getTime()));   
      
    c.add(Calendar.DAY_OF_MONTH, 60);  
    System.out.println("Sessenta dias depois: " + sd.format(c.getTime()));  
      
    c.add(Calendar.DAY_OF_MONTH, -1);   
    System.out.println("Um dia antes: " + sd.format(c.getTime()));   
      
    c.add(Calendar.MONTH, -1);   
    System.out.println("Um mês antes: " + sd.format(c.getTime()));   
      
    c = new GregorianCalendar(2003, Calendar.MARCH, 3);   
    System.out.println("Data: " + sd.format(c.getTime()));   
      
    c.add(Calendar.DAY_OF_MONTH, -1);   
    System.out.println("Um dia antes: " + sd.format(c.getTime()));   
      
    c.add(Calendar.MONTH, -1);   
    System.out.println("Um mês antes: " + sd.format(c.getTime()));
    */

}
